package com.zenglb.framework.activity.access; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.os.Build; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.CardView; import android.transition.Transition; import android.transition.TransitionInflater; import android.view.View; import android.view.ViewAnimationUtils; import android.view.animation.AccelerateInterpolator; import com.zenglb.baselib.base.BaseActivity; import com.zenglb.framework.R; public class RegisterActivity extends BaseActivity { FloatingActionButton fab; CardView cvAdd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { ShowEnterAnimation(); } fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { animateRevealClose(); } }); } @Override protected int setLayoutId() { return R.layout.activity_register; } @Override protected void initViews() { fab=(FloatingActionButton) findViewById(R.id.fab); cvAdd=(CardView) findViewById(R.id.cv_add); } private void ShowEnterAnimation() { Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.fabtransition); getWindow().setSharedElementEnterTransition(transition); transition.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { cvAdd.setVisibility(View.GONE); } @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); animateRevealShow(); } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); } public void animateRevealShow() { Animator mAnimator = ViewAnimationUtils.createCircularReveal(cvAdd, cvAdd.getWidth() / 2, 0, fab.getWidth() / 2, cvAdd.getHeight()); mAnimator.setDuration(300); mAnimator.setInterpolator(new AccelerateInterpolator()); mAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); } @Override public void onAnimationStart(Animator animation) { cvAdd.setVisibility(View.VISIBLE); super.onAnimationStart(animation); } }); mAnimator.start(); } public void animateRevealClose() { Animator mAnimator = ViewAnimationUtils.createCircularReveal(cvAdd, cvAdd.getWidth() / 2, 0, cvAdd.getHeight(), fab.getWidth() / 2); mAnimator.setDuration(300); mAnimator.setInterpolator(new AccelerateInterpolator()); mAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { cvAdd.setVisibility(View.INVISIBLE); super.onAnimationEnd(animation); fab.setImageResource(R.drawable.plus); RegisterActivity.super.onBackPressed(); } @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); } }); mAnimator.start(); } @Override public void onBackPressed() { animateRevealClose(); } }